import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import lognorm

# 设置对数正态分布的参数
# s 是对数正态分布的标准差，scale 是对数正态分布的尺度参数（即均值对应的指数）
s = 0.5  # 标准差
scale = np.exp(1)  # 尺度参数，这里设置为 e，相当于正态分布的均值为1

# 生成对数正态分布的数据
# size 参数表示生成数据的数量
data = lognorm.rvs(s=s, scale=scale, size=1000)

# 绘制对数正态分布的PDF
x = np.linspace(lognorm.ppf(0.01, s=s, scale=scale),
                lognorm.ppf(0.99, s=s, scale=scale), 100)
pdf = lognorm.pdf(x, s=s, scale=scale)

plt.figure(figsize=(8, 6))
plt.plot(x, pdf, 'r-', lw=5, alpha=0.6, label='lognormal pdf')

# 绘制直方图
plt.hist(data, density=True, alpha=0.6, color='g')

plt.title('Lognormal Distribution Example')
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.legend()
plt.show()